<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
  </style>
</head>
<body>
</body>
</html>
<script>
// 堆、栈， 指的是  内存 的两种结构。


// 基础数据类型，存在「栈」当中
/* 基础数据类型
  var num1 = 123;
  var num2 = num1;

  num2 = 456;
  console.log(num1, num2);
  num1 ->  123;
  num2 -> 456;
*/


// 复杂数据类型，存储在「堆」当中
/* 复杂类型 / 引用类型 ('object')
  var obj1 = {
    name: '111'
  };

  var obj2 = obj1;

  obj2.name = '999';

  console.log(obj1, obj2);
  // obj1  -> {name: 999}
  // obj2  -> {name: 999}
*/

// -----------------------
// 总结：
  // 栈内存，存储 基础类型的数据；变量 直接 指向 内存(栈)数据。
  // 堆内存，存储 复杂类型的数据；变量 指向的 是 内存数据 的 地址引用，地址的引用才 指向真正的 数据（堆）。


// 拓展：堆和栈内存上特性的区别：
  // 栈：表示的是 连续的内存空间。 -> 因为 栈内存，是连续的，表示 栈内存的大小不能 不断扩大。
  // 堆：可表示 不连续的内存空间。 -> 因为 堆内存，不连续，表示 堆内存 可以 不断扩大
    // [].push()
</script>